package com.aidex.biz.domain;

import com.aidex.biz.domain.bo.PaymentScheduleDto;
import com.aidex.common.annotation.Excel;
import com.aidex.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 客户进件对象 biz_jinjian_info
 *
 * @author sean
 * @email 2074844820@qq.com
 * @date 2023-12-11
 */
@Data
public class JinjianInfo extends BaseEntity<JinjianInfo> {
    private static final long serialVersionUID = 1L;


    /**
     * 月供
     */
    @Excel(name = "月供")
    private BigDecimal monthAmount;

    /**
     * 公司ID
     */
    private String companyId;

    /**
     * 客户ID
     */
    private String customerId;

    /**
     * 身份证号码
     */
    @Excel(name = "身份证号码")
    private String idCard;

    /**
     * 客户姓名
     */
    @Excel(name = "客户姓名")
    private String customerName;

    /**
     * 电话
     */
    @Excel(name = "电话")
    private String phone;

    /**
     * 产品所属机构
     */
    private String orgType;

    /**
     * 产品ID
     */
    private String productId;

    /**
     * 产品名称
     */
    @Excel(name = "产品名称")
    private String productName;

    /**
     * 产品所属机构
     */
    private String orgTypeTwo;

    /**
     * 产品ID
     */
    private String productIdTwo;

    /**
     * 产品名称
     */
    @Excel(name = "产品名称")
    private String productNameTwo;


    /**
     * 产品所属机构
     */
    private String orgTypeThree;

    /**
     * 产品ID
     */
    private String productIdThree;

    /**
     * 产品名称
     */
    @Excel(name = "产品名称")
    private String productNameThree;

    /**
     * 进件类型
     */
    @Excel(name = "进件类型", dictType = "product_type")
    private String jinjianType;

    /**
     * 意向额度
     */
    @Excel(name = "意向额度")
    private BigDecimal yxEdu;

    /**
     * 实际额度
     */
    private BigDecimal sjEdu;

    /**
     * 利率
     */
    @Excel(name = "利率")
    private BigDecimal lv;

    /**
     * 还款方式
     */
    @Excel(name = "还款方式", dictType = "back_type")
    private String backType;

    /**
     * 分期时间
     */
    @Excel(name = "分期时间")
    private Integer fenqiTime;

    /**
     * 抵押时间
     */
    @Excel(name = "抵押时间")
    private String diyaTime;

    /**
     * 产品条件
     */
    private String productTiaojian;

    /**
     * 签单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签单时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date qiandanTime;

    /**
     * 签单时间开始
     */
    private String beginQiandanTime;

    /**
     * 签单时间结束
     */
    private String endQiandanTime;
    /**
     * 服务费用
     */
    @Excel(name = "服务费用")
    private BigDecimal serviceAmount;

    /**
     * 费用备注
     */
    @Excel(name = "费用备注")
    private String serviceAmountRemark;

    /**
     * 客服姓名
     */
    @Excel(name = "客服姓名")
    private String servcieUserName;

    /**
     * 客服ID
     */
    private String servcieUserId;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 预审状态（0预审中 1 预审通过 2 预审驳回 8 回款）
     */
    private String status;
    private String khjlName;
    /**
     * 进件状态
     */
    private String jinjianStatus;

    /**
     * 签约状态 0待签约 1 签约 2 请款 3 放款 4 回款
     */
    private String qianyueStatus;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date fkTime;

    /**
     * 成交时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date cjTime;

    /**
     * 是否抵押
     */
    private String diyaStatus;
    /**
     * 后补材料
     * 已完成，未完成
     */
    private String addFiles;
//    合同签署
//            服务合同
//    GPS安装
//            钥匙配置
//    抵押下单
//            抵押寄出
//    车辆保单

    /**
     * 合同签署
     * 已签署，未签署
     */
    private String hetongQianshu;
    /**
     * 服务合同是否
     */
    private String serviceContractSign;
    /**
     * 是否安装gps
     */
    private String isGps;


    /**
     * 备用钥匙
     */
    private String beiyongKey;


    /**
     * 是否抵押下单
     */
    private String diyaSign;

    /**
     * 抵押寄出
     */
    private String diyaSendOut;

    /**
     * 车辆保单
     */
    private String carInsurancePolicy;


    /**
     * 资料回寄
     * 未回寄，已回寄
     */
    private String ziliaoBack;

    private String remarkOne; // 备注1
    private String remarkTwo; // 备注2
    private String remarkThree; // 备注3

    private String isTgOne; // 产品1是否通过
    private String isTgTwo; // 产品2是否通过
    private String isTgThree; // 产品3是否通过

    private BigDecimal zfei; // 杂费
    private BigDecimal glFei;// 管理费

    /**
     * 0 没放款 1放款成功
     */
    private String isFk; // 是否放款
    /**
     * 上门接待经理
     */
    private String toHomeUserId;

    /**
     * 上门ID
     */
    private String tuHomeId;
    /**
     * 姓名或电话
     */
    private String nameOrPhone;


    /**
     * 资方类型
     */
    private String zifangType;

    /***
     * 到期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date overTime;


    /**
     * 进件时来源
     */
    private String laiyuan;

    /**
     * 操作
     */
    private String operation;

    /**
     * 0 没确认回款 1 已确认回款
     */
    private String isHk; // 是否回款

    /***
     * 回款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date hkTime;

    /**
     * 确认回款额
     */
    private BigDecimal serviceConfirmAmount;


    /**
     * 钥匙费
     */
    private BigDecimal serviceKeyAmount;

    /**
     * 保险费
     */
    private BigDecimal serviceInsuranceAmount;

    /**
     * 谈单费
     */
    private BigDecimal serviceDealAmount;

    /**
     * 客服签单费
     */
    private BigDecimal serviceSignAmount;

    /**
     * 装gps费
     */
    private BigDecimal serviceGpsAmount;

    /**
     * 抵押费
     */
    private BigDecimal serviceDiyaAmount;

    /**
     * 垫资费
     */
    private BigDecimal servicePayAmount;

    /**
     * 解压费
     */
    private BigDecimal serviceJieyaAmount;

    /**
     * 其他费
     */
    private BigDecimal serviceOtherAmount;

    /**
     * 多状态查询
     */
    private String[] jinjianStatusArray;


    //还款信息

    /**
     * 每月还款日
     */
    private Integer monthlyPayDate;
    /**
     * 月供
     */
    private BigDecimal monthlyPayment;

    /**
     * 总还款
     */
    private BigDecimal totalPayment;

    /**
     * 总利息
     */
    private BigDecimal totalInterest;

    /**
     * 还款明细
     */
    private List<PaymentScheduleDto> paymentSchedule;

    /**
     * 客户是否同意服务费
     */
    private String agreeServiceAmount;


    /**
     * 谈单经理id
     */
    private String tandanUserId;
    /**
     * 谈单经理姓名
     */
    private String tandanUserName;
    /**
     * 签约产品ID
     */
    private String qianyueProductId;

    /**
     * 线索成本记录表ID
     */
    private String xscbLogId;


    /**
     * 数据清洗状态 默认是0 洗完是1
     */
    private Integer cleaningStatus;

    /**
     * 协助人员名称
     */
    private String xiezuUserName;
    /**
     * 协助人员ID
     */
    private String xiezuUserId;


    public Date getOverTime() {
        return overTime;
    }

    public void setOverTime(Date overTime) {
        this.overTime = overTime;
    }

    public BigDecimal getMonthAmount() {
        return monthAmount;
    }

    public void setMonthAmount(BigDecimal monthAmount) {
        this.monthAmount = monthAmount;
    }

    public String getCompanyId() {
        return companyId;
    }

    public void setCompanyId(String companyId) {
        this.companyId = companyId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getOrgType() {
        return orgType;
    }

    public void setOrgType(String orgType) {
        this.orgType = orgType;
    }

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getJinjianType() {
        return jinjianType;
    }

    public void setJinjianType(String jinjianType) {
        this.jinjianType = jinjianType;
    }

    public BigDecimal getYxEdu() {
        return yxEdu;
    }

    public void setYxEdu(BigDecimal yxEdu) {
        this.yxEdu = yxEdu;
    }

    public BigDecimal getSjEdu() {
        return sjEdu;
    }

    public void setSjEdu(BigDecimal sjEdu) {
        this.sjEdu = sjEdu;
    }

    public BigDecimal getLv() {
        return lv;
    }

    public void setLv(BigDecimal lv) {
        this.lv = lv;
    }

    public String getBackType() {
        return backType;
    }

    public void setBackType(String backType) {
        this.backType = backType;
    }

    public Integer getFenqiTime() {
        return fenqiTime;
    }

    public void setFenqiTime(Integer fenqiTime) {
        this.fenqiTime = fenqiTime;
    }

    public String getDiyaTime() {
        return diyaTime;
    }

    public void setDiyaTime(String diyaTime) {
        this.diyaTime = diyaTime;
    }

    public String getProductTiaojian() {
        return productTiaojian;
    }

    public void setProductTiaojian(String productTiaojian) {
        this.productTiaojian = productTiaojian;
    }

    public Date getQiandanTime() {
        return qiandanTime;
    }

    public void setQiandanTime(Date qiandanTime) {
        this.qiandanTime = qiandanTime;
    }

    public BigDecimal getServiceAmount() {
        return serviceAmount;
    }

    public void setServiceAmount(BigDecimal serviceAmount) {
        this.serviceAmount = serviceAmount;
    }

    public String getServiceAmountRemark() {
        return serviceAmountRemark;
    }

    public void setServiceAmountRemark(String serviceAmountRemark) {
        this.serviceAmountRemark = serviceAmountRemark;
    }

    public String getServcieUserName() {
        return servcieUserName;
    }

    public void setServcieUserName(String servcieUserName) {
        this.servcieUserName = servcieUserName;
    }

    public String getServcieUserId() {
        return servcieUserId;
    }

    public void setServcieUserId(String servcieUserId) {
        this.servcieUserId = servcieUserId;
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("userId", getUserId())
                .append("deptId", getDeptId())
                .append("userName", getUserName())
                .append("deptName", getDeptName())
                .append("monthAmount", getMonthAmount())
                .append("companyId", getCompanyId())
                .append("customerId", getCustomerId())
                .append("idCard", getIdCard())
                .append("customerName", getCustomerName())
                .append("phone", getPhone())
                .append("orgType", getOrgType())
                .append("productId", getProductId())
                .append("productName", getProductName())
                .append("jinjianType", getJinjianType())
                .append("yxEdu", getYxEdu())
                .append("sjEdu", getSjEdu())
                .append("lv", getLv())
                .append("backType", getBackType())
                .append("fenqiTime", getFenqiTime())
                .append("diyaTime", getDiyaTime())
                .append("productTiaojian", getProductTiaojian())
                .append("qiandanTime", getQiandanTime())
                .append("serviceAmount", getServiceAmount())
                .append("serviceAmountRemark", getServiceAmountRemark())
                .append("servcieUserName", getServcieUserName())
                .append("servcieUserId", getServcieUserId())
                .append("sort", getSort())
                .append("status", getStatus())
                .append("remark", getRemark())
                .append("id", getId())
                .append("createBy", getCreateBy())
                .append("createDept", getCreateDept())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("updateIp", getUpdateIp())
                .append("version", getVersion())
                .append("delFlag", getDelFlag())
                .toString();
    }
}
